class Solution:
    def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:
        window=nums[:k]
        window.sort()
        result=[]
        result.append(window[-1])
        def halfSearch(val):
            nonlocal k
            left=0
            right=len(window)-1
            while left<=right:
                mid=(left+right)//2
                if window[mid]<val:
                    left=mid+1
                elif window[mid]>val:
                    right=mid-1
                else:
                    return mid
            return left
        for i in range(1,len(nums)-k+1):
            del window[halfSearch(nums[i-1])]
            window.insert(halfSearch(nums[i+k-1]),nums[i+k-1])
            result.append(window[-1])
        return result

'''
执行用时：
5816 ms
, 在所有 Python3 提交中击败了
5.03%
的用户
内存消耗：
27 MB
, 在所有 Python3 提交中击败了
36.16%
的用户
'''